package top.infopub.mgr.fia.dao;

import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import top.infopub.dto.fia.BudgetDto;
import top.infopub.dto.fia.OutConReviewAmtDto;
import top.infopub.generic.GenericDao;
import top.infopub.mgr.fia.domain.BudgetSummaryDomain;
import top.infopub.mgr.fia.vo.BudgetSummaryVo;
import top.infopub.model.fia.Budget;
import top.infopub.model.fia.BudgetTask;

import java.math.BigDecimal;
import java.util.List;

/** 预算管理(FIA_BUDGET) **/
@Repository
public interface BudgetDao extends GenericDao<Budget, String> {

    /*
     *分页查询数据
     * */
    Page<BudgetSummaryDomain> selectByDomainWhere(BudgetSummaryVo budgetSummaryVo);

    /**
     * 根据项目编码、预算年份、公司ID查询预算数据
     * 检查指定公司的指定项目的指定年份是否已经做过预算
     * @param proCode 项目编码
     * @param budgetYear 预算年份，格式yyyy
     * @param hrOrgId 公司ID
     * @return
     */
    Budget queryByUniWhere(@Param("proCode") String proCode,
                           @Param("budgetYear") String budgetYear,
                           @Param("hrOrgId") String hrOrgId);

    /**
     * 查询对外合同评审总计清单
     * @param proCode
     * @return
     */
    List<OutConReviewAmtDto> querySumOutConReviewAmtList(@Param("proCode") String proCode);

    /**
     * 查询项目总投金额
     * @param proCode
     * @return
     */
    BigDecimal queryProTotalAmt(@Param("proCode") String proCode);

    /**
     * 根据ID查询详情
     * @param id
     * @return
     */
    BudgetDto queryDetailById(@Param("id") String id);

    /**
     * 新增预算管理任务
     * @param budgetTask
     * @return
     */
    int insertBudgetTask(BudgetTask budgetTask);
}